Computing applications and web services are frequently made available over computer networks such as the Internet. Web services are distributed applications that can be described, published, located, or invoked over computing networks. Generally, a web service provides an application made available over the internet which communicates with endpoints and other services using standardized messaging protocols. For example, a client invokes a web service by sending a message to a web service endpoint and waiting for a response.
Both the request and the response may be formatted using machine readable markup languages (e.g., XML). A variety of web service frameworks have been developed which allow developers to define a web service using a service description language, e.g., Web Services Description Language (WSDL). Service owners use the service description language to compose a document describing an entire web service. Service description languages, such as WSDL, define a machine-readable format for describing a network location for a web service, protocols supported by the web service, interfaces exposed by the web service, parameters passed to API calls defined by the web service, and data structures returned by API calls defined by the web service.
Service owners typically perform a variety of tests to confirm a web service operates correctly. In addition, service owners often perform load and performance testing to understand how well a web service performs at an expected production load and to evaluate how well a service can respond to spikes in demand. Currently, load and performance tests developed to test a web service include logic reflecting how the service is called, parameters passed to the service, and data structures returned by the tests, etc. However, this duplicates information present in the service description language document in the tests. Duplicating this information from the service description language document increases the time required to develop load and performance tests. As the time to test a service is frequently limited, this additional development time can result in less-than-desired testing time and lower quality software.
Further, duplicating web service description information in the tests increases maintenance complexity. For example, since the logic describing a web service is present in both the service description language document and in the test code, the logic in the tests needs to be updated each time the service is modified or updated. As a result, changes to the service and the test code often need to be coordinated. For example, changes made to a production service that are incompatible with the test code can result in a broken build or result in tests compiling but then failing, thus blocking (or at least delaying) a new (or updated) service deployment. This further increases development time needed to manage test code and reduces the time for actual testing.